<?php
$title = '$this 和 self 作用域 - PHP - aaaaa - wang lei\'s homepage';
include_once('../header.php');
include_once('../daohang_c.php');?>
<xmp>class a {
	function a() {
		echo 'a';
	}
}

class b extends a {
	function b() {
		$this->a();
	}
	function c() {
		self::a();
	}
}

$bb = new b();
$bb->b();
echo '<br>';
$bb->c();

输出:
aa
a</xmp>由此可以看出, 在子类中, 使用 $this 和 self 作用域调用父类方法的不同, 在子类中使用 $this 调用了两次, 也就是说对象中有两个同名的方法, 一个是 self::a(), 一个是 parent::a(), 而使用 self::a() 只调用对象中子类的方法.
<br /><br />
修改一下: <xmp>class a {
	function a() {
		echo 'a';
	}
}

class b extends a {
	function a() {
		echo 'a!';
	}

	function b() {
		$this->a();
	}
	function c() {
		parent::a();
	}
}

$bb = new b();
$bb->b();
echo '<br>';
$bb->c();

输出:
a!a!
a</xmp>
看来 $this 调用的两次并不是简单的 self::a() 和 parent::a() 啊. 
<?php include_once('../footer.php');
